home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib11.dsk / FAT GRAPH.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  111 lines

  1. 10  REM  **********************
  2. 11  REM  * FAT GRAPH          *
  3. 12  REM  * BY CHRIS EXNER     *
  4. 13  REM  * COPYRIGHT (C) 1982 *
  5. 14  REM  * BY MICRO-SPARC INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 190  LOMEM: 16385
  9. 200 D$ =  CHR$(4)
  10. 250  DIM PEOPLE$(4),W(4,120),LAST(4)
  11. 300  TEXT : GOSUB 10000: REM  FILE OPEN ROUTINE
  12. 400  REM  ** ENTER NEW FAT FIGURES
  13. 500  HOME : PRINT  TAB( 8);"* ENTER NEW FAT FIGURES *"
  14. 550  VTAB 6: PRINT "HIT RETURN TO END ENTRY"
  15. 600  VTAB 10: PRINT "NAME:"
  16. 700  VTAB 12: PRINT "WEIGHT:"
  17. 800  POKE 32,8: POKE 33,30
  18. 1200  VTAB 10: CALL  -958: INPUT "";NAME$
  19. 1250  IF NAME$ = ""  THEN  POKE 32,0: POKE 33,40: GOTO 2000
  20. 1300  VTAB 12: INPUT "";WEIGHT
  21. 1400  VTAB 16: INPUT "ANY CORRECTIONS (Y/N)? ";ANS$
  22. 1500  IF ANS$ < >"Y"  AND ANS$ < >"N"  THEN 1400
  23. 1600  IF ANS$ = "Y"  THEN  GOTO 1200
  24. 1700  PRINT D$;"WRITE FAT FILE"
  25. 1800  PRINT NAME$
  26. 1850  PRINT WEIGHT
  27. 1900  PRINT D$: GOTO 1200
  28. 2000  REM  **READ ALL FAT DATA
  29. 2100  PRINT D$;"CLOSE FAT FILE"
  30. 2200  PRINT D$;"OPEN FAT FILE"
  31. 2500  ONERR  GOTO 3300
  32. 2600  PRINT D$;"READ FAT FILE"
  33. 2700  INPUT NAME$,WEIGHT
  34. 2800  REM  ** DETERMINE THE I-VALUE FOR THE PERSON'S NAME
  35. 2900  GOSUB 15000
  36. 3000  REM  ** LOAD RECORD INFO INTO ARRAYS
  37. 3100 W(I,LAST(I)) = WEIGHT
  38. 3150 LAST(I) = LAST(I) +1
  39. 3200  GOTO 2500
  40. 3300  IF  PEEK(222) < >5  THEN  PRINT "ERROR: "; PEEK(222): END 
  41. 3350  PRINT D$;"CLOSE FAT FILE"
  42. 3500  REM  ** ENTER GRAPH AXES DATA
  43. 3510  HOME : PRINT  TAB( 8);"** SET-UP GRAPH AXES **"
  44. 3520  VTAB 6: PRINT "   THE GRAPH PLOTS A 70 POUND RANGE."
  45. 3530  PRINT : INPUT "   ENTER THE LOWEST WEIGHT: ";XMIN
  46. 3540  VTAB 12: HTAB 6: PRINT "PLOT FAT GRAPH FOR LAST"
  47. 3610  PRINT : HTAB 6: INPUT "6, 24, OR 120 DAYS: ";DTERANGE
  48. 3650  IF DTERANGE < >6  AND DTERANGE < >24  AND DTERANGE < >120  THEN  GOTO 3610
  49. 3675  HOME : VTAB 21
  50. 3700  IF DTERANGE = 6  THEN XINC = 40: PRINT "   0     1     2     3    4     5     6"
  51. 3750  IF DTERANGE = 24  THEN XINC = 10: PRINT "   0  2  4  6  8 10 12 14 16 18 20 22 24";
  52. 3800  IF DTERANGE = 120  THEN XINC = 2: PRINT "   0     20    40   60    80   100   120";
  53. 3850  PRINT XMIN
  54. 3900  PRINT "   COLORS: ";PEOPLE$(0);"=1, ";PEOPLE$(1);"=2, ";
  55. 3950  PRINT PEOPLE$(2);"=3, ";PEOPLE$(4);"=5, ";
  56. 3975  PRINT PEOPLE$(3);"=6";
  57. 4000  REM  ** SET UP THE GRAPH LAYOUT
  58. 4100  HGR : HCOLOR= 7
  59. 4200  HPLOT 26,12 TO 268,12 TO 268,152 TO 26,152 TO 26,12
  60. 4300  HPLOT 27,13 TO 269,13 TO 269,153 TO 27,153 TO 27,13
  61. 4350  REM  ** DRAW THE WEIGHT SCALE (Y-AXIS)
  62. 4400  FOR Y = 12 TO 152  STEP 20
  63. 4500  HPLOT 0,Y TO 21,Y
  64. 4600  HPLOT 10,Y +10 TO 21,Y +10
  65. 4650  FOR X = 28 TO 267  STEP 7: HPLOT X,Y: NEXT X
  66. 4700  NEXT Y
  67. 4750  REM  ** DRAW THE DATE SCALE (X-AXIS)
  68. 4800  FOR X = 67 TO 267  STEP 40
  69. 4850  HPLOT X,154 TO X,159
  70. 4875  HPLOT X -10,154 TO X -10,155
  71. 4900  HPLOT X -20,154 TO X -20,157
  72. 4925  HPLOT X -30,154 TO X -30,155
  73. 4950  NEXT X
  74. 5000  REM  ** PLOT THE WEIGHTS OF EACH PERSON ON FILE
  75. 5100  FOR I = 0 TO 4
  76. 5200  HCOLOR= I +1
  77. 5300  IF I = 3  THEN  HCOLOR= 6
  78. 5400 XOLD = 0:YOLD = 0
  79. 5500 J = 0: IF DTERANGE <LAST(I) +1  THEN J = LAST(I) -(DTERANGE +1)
  80. 5600  FOR Z = 0 TO DTERANGE
  81. 5700  IF W(I,J) = 0  THEN  GOTO 6500
  82. 5800 Y = ((XMIN +70) -W(I,J)) *2 +12
  83. 5850  IF Y <0  THEN Y = 0: IF Y >159  THEN Y = 159
  84. 5900  IF XOLD = 0  AND YOLD = 0  THEN X = 28: HPLOT X,Y: GOTO 6100
  85. 6000  HPLOT XOLD,YOLD TO X,Y
  86. 6100 XOLD = X:YOLD = Y
  87. 6200 X = X +XINC
  88. 6300 J = J +1
  89. 6400  NEXT Z
  90. 6500  NEXT I
  91. 6600  GET A$: END 
  92. 9500  PRINT PEOPLE$(2);"=3, ";PEOPLE$(4);"=5";
  93. 10000  REM  ** FILE OPEN ROUTINE
  94. 10100  HOME : VTAB 12: INPUT "STARTING A NEW FILE (Y/N)? ";ANS$
  95. 10200  IF ANS$ < >"N"  AND ANS$ < >"Y"  THEN 10100
  96. 10300  IF ANS$ = "N"  THEN  PRINT D$;"APPEND FAT FILE": RETURN 
  97. 10350  PRINT : PRINT  TAB( 8);"** WARNING **"
  98. 10400  PRINT "CREATING A NEW FILE WILL DESTROY"
  99. 10450  PRINT "ANY OLD WEIGHT DATA."
  100. 10500  PRINT : INPUT "CONTINUE (Y/N)? ";ANS$
  101. 10600  IF ANS$ < >"Y"  THEN  GOTO 10100
  102. 10700  PRINT D$;"OPEN FAT FILE"
  103. 10800  PRINT D$;"DELETE FAT FILE"
  104. 10900  PRINT D$;"OPEN FAT FILE"
  105. 11000  RETURN 
  106. 15000  REM  ** GET I-VALUE ROUTINE
  107. 15100 I = 0
  108. 15200  IF PEOPLE$(I) = NAME$  THEN  RETURN 
  109. 15300  IF PEOPLE$(I) = ""  THEN PEOPLE$(I) = NAME$: RETURN 
  110. 15400 I = I +1: IF I >4  THEN  PRINT "MORE PEOPLE ON FILE,": PRINT "THEN ROOM IN ARRAYS": END 
  111. 15500  GOTO 15200